CloudWatch Logsにログ出力するAurora MySQL 5.7のCFnテンプレート
構成
EC2
Auroraに接続するためのEC2です。UserDataよりSQLクライアントをインストールしています。
Aurora
検証環境ということで料金を考慮し、デフォルトではシングルAZ構成にしました。後ほど説明しますが、スタック作成の際にパラメータ指定することで、レプリカインスタンスを追加することが可能です。
CloudWatch
監査ログ、スローログなど、各種ログをCloudWatch Logsに出力する設定としました。
テンプレート
テンプレートは以下にあります。かいつまんで説明します。
パラメータ
- ProjectName
- 任意の値を指定します。作成するAWSリソースのプレフィックスとして扱われます。
- EC2KeyPair
- EC2のログインに使用するキーペア名を指定します。事前にキーペアを作成しておく必要があります。
- EC2ImageId
- EC2のAMIを指定します。デフォルトでは最新のAmazon Linux 2を指定しています。
- SecurityGroupInboudRule
- EC2ログイン用のSSH接続元を指定します。
- MasterUsername
- RDSのマスターユーザー名を指定します。
- MasterPassword
- RDSマスターユーザーのパスワードを指定します。
- EnableReplica
- リードレプリカインスタンス作成有無を指定します。デフォルトは
false
で、レプリカは作成されません。
DBクラスターパラメーターグループ
監査ログの出力をDBクラスターのパラメーターグループで指定しています。 ここでは全てのイベントを対象にしています。
auroraDBClusterParameterGroup: Type: AWS::RDS::DBClusterParameterGroup Properties: Family: "aurora-mysql5.7" Description: "Aurora(MySQL 5.7) DBCluster ParameterGroup" Parameters: time_zone: "Asia/Tokyo" general_log: 1 server_audit_logging: 1 server_audit_events: "Connect,Query,Query_DCL,Query_DDL,Query_DML,Table" slow_query_log: 1
DBクラスター
DBクラスターにてCloudWatch Logs にエクスポートするログを指定しています。
auroraDBCluster: Type: AWS::RDS::DBCluster Properties: BackupRetentionPeriod: 1 DatabaseName: test_database (省略) EnableCloudwatchLogsExports: - general - error - slowquery - audit
DBインスタンス
レプリカインスタンスの作成有無はConditionsを利用しています。 以下は、Conditionsセクションと関連付けしている箇所です。
Conditions: EnableReplica: !Equals [true, !Ref EnableReplica]
auroraReplicaInstance: Type: "AWS::RDS::DBInstance" Condition: EnableReplica
接続確認
スタックにて構築されたEC2は、SQLクライアントインストール済みです。EC2にログイン後、RDSへの接続を確認しました。
[ec2-user@ip-10-0-1-137 ~]$ mysql -h test-aurora-cluster.cluster-cio9itnhm7vz.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 50 Server version: 5.7.12 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test_database | +--------------------+ 5 rows in set (0.01 sec) MySQL [(none)]>
CloudWatch Logsを確認すると、監査ログ、エラーログ、一般ログ、スロークエリログの出力が確認できました。
さいごに
CFnにて検証用のAuroraを作成してみました。Aurora検証時など、お役に立てれば幸いです。